#功能：acme.h全自动化申请续签SSL证书，Linux宝塔网站和雷池WAF全自动化部署SSL证书的shell脚本
#!/bin/bash

#网站申请SSL证书的域名（WEB_DOMAIN值替换成自己实际域名即可）
WEB_DOMAIN="www.test.com"
#网站根目录名称（WEB_ROOT_NAME值替换成自己实际网站根目录名称即可）
WEB_ROOT_NAME="68.162.x.x"

#1.存放acme申请签发的SSL证书目录(root账户的家目录是/root),acme默认安装路径/root/.acme.sh/acme.sh
#2.acme申请签发的SSL证书会自动创建目录"/root/.acme.sh/www.test.com_ecc"
#3.acme申请签发的SSL证书-密钥(KEY)文件，Your cert key is in: /root/.acme.sh/www.test.com_ecc/www.test.com.key
#4.acme申请签发的SSL证书-证书(cer)文件，And the full-chain cert is in: /root/.acme.sh/www.test.com_ecc/fullchain.cer
CERT_DIR="/root/.acme.sh/${WEB_DOMAIN}_ecc"
#Linux宝塔面板的SSL证书目录
BT_SSL_DIR="/www/server/panel/vhost/cert"
#雷池WAF的默认SSL证书目录
WAF_SSL_DIR="/data/safeline/resources/nginx/certs"

#如果acme申请签发保存SSL证书的目录存在"/root/.acme.sh/www.test.com_ecc"，则递归删除目录及文件
if [ -d "$CERT_DIR" ]; then
    rm -rf "$CERT_DIR"
fi

cd ~

current_datetime=$(date "+%Y-%m-%d %H:%M:%S")
echo "=========================================================================================="
echo "★ [$current_datetime] acme开始申请签发SSL证书......"
echo "=========================================================================================="	
#acme申请签发SSL证书
/root/.acme.sh/acme.sh --issue --dns dns_ali -d "$WEB_DOMAIN"

sleep 15 #延时15s

#判断acme是否申请签发SSL证书成功？
if [ -f "$CERT_DIR/fullchain.cer" ] && [ -f "$CERT_DIR/${WEB_DOMAIN}.key" ]; then
	current_datetime=$(date "+%Y-%m-%d %H:%M:%S")
	current_datetime_1=${current_datetime//:/-}
	current_datetime_1=${current_datetime_1// /_}
	echo "=========================================================================================="
	echo "☆ [$current_datetime] acme申请签发SSL证书成功"
    echo "=========================================================================================="
	
  	#Linux宝塔面板安装SSL证书
	/root/.acme.sh/acme.sh --install-cert -d "$WEB_DOMAIN" \
	--key-file "$BT_SSL_DIR/$WEB_ROOT_NAME/privkey.pem"  \
	--fullchain-file "$BT_SSL_DIR/$WEB_ROOT_NAME/fullchain.pem" \
	--reloadcmd "service nginx force-reload"
	
	current_datetime=$(date "+%Y-%m-%d %H:%M:%S")
	echo "=========================================================================================="
	echo "☆ [$current_datetime] Linux宝塔网站更新SSL证书成功"
	echo "=========================================================================================="
	sleep 10 #延时10s

	#雷池WAF安装SSL证书，要求WAF版本 >= 7.2.0,获取证书后覆盖上述文件即可，WAF默认每小时刷新一次证书内容
	cp "$CERT_DIR/fullchain.cer" "$WAF_SSL_DIR/cert_1.crt"
	cp "$CERT_DIR/${WEB_DOMAIN}.key" "$WAF_SSL_DIR/cert_1.key"
	
	current_datetime=$(date "+%Y-%m-%d %H:%M:%S")
	echo "=========================================================================================="
	echo "☆ [$current_datetime] 雷池WAF更新SSL证书成功"
	echo "=========================================================================================="
	
	#重命名acme申请签发保存SSL证书文件的目录"/root/.acme.sh/${WEB_DOMAIN}_ecc"
	mv "/root/.acme.sh/${WEB_DOMAIN}_ecc" "/root/.acme.sh/${current_datetime_1}_${WEB_DOMAIN}_ecc"
else
	current_datetime=$(date "+%Y-%m-%d %H:%M:%S")
	echo "=========================================================================================="
	echo "[$current_datetime] acme申请签发SSL证书失败"
	echo "=========================================================================================="
fi

sleep 30 #30s后关闭脚本
exit 0
